// 这个函数调用之后，会返回一个实例
import { createRouter, createWebHistory } from 'vue-router'
import Home from './views/Home.vue'
import Login from './views/Login.vue'
import ColumnDetail from './views/ColumnDetail.vue'
import CreatePost from './views/CreatePost.vue'
import store from './store'
const routerHistory = createWebHistory()
const router = createRouter({
    // 之前 url 使用的是Url哈希，有很多缺点，唯一优点支持旧版的浏览器
    history: routerHistory,
    routes: [
        {
            path: "/",
            name: "home",
            component: Home
        },
        {
            path: "/login",
            name: "login",
            component: Login,
            meta: { redirectAlreadyLogin: true }
        },
        {
            path: "/create",
            name: "create",
            component: CreatePost,
            // 配置路由元信息
            meta: { requiredLogin: true }
        },
        {
            path: "/column/:id",
            name: "column",
            component: ColumnDetail
        },
    ]
})

router.beforeEach((to, from, next) => {
    // 到达的路由 不等于 login 并且 为false=>未登录状态
    if (to.meta.requiredLogin && !store.state.user.isLogin) {
        // next可以是空，可以接受false，也可以接受像route.push一样的object
        next({ name: 'login' });  // 重定向到 login
    }
    // 到达的路由等于login 并且 用户已登录，重定向到首页
    else if (to.meta.redirectAlreadyLogin && store.state.user.isLogin) {
        next('/')
    }
    else {
        // 假如不是这种情况，调用next()让它继续下去
        next()
    }
})
export default router